package me.nereo.multi_image_selector;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.WindowManager;

import com.ali.music.multi_image_selector.R;

import java.util.ArrayList;

/**
 * 多图预览界面
 */
public class MultiImagePreviewActivity extends FragmentActivity {
    MultiImagePreviewFragment fragment;

//    /**
//     * 启动图片预览。可预览preViewList数组中的图片。
//     * 有三种模式：
//     * 1、预览图片。提供放大缩小功能。退出是不返回任何值。
//     * 2、提供图片选择功能，点击完成后，返回选中的图片。
//     * 3、预览，并下载转存图片。
//     *
//     * @param object       {@link Activity} 或者 {@link Fragment} {@link android.app.Fragment}, 否则抛出{@link IllegalArgumentException}
//     * @param preViewList  预览列表.实际能看到的图片列表
//     * @param selectedList 已选择选择列表，preViewList中已经选中的列表
//     * @param maxNum       最大可选择图片总数
//     * @param position     当前要显示的图片在列表中的位置。若大于列表size 或小于0，则显示第一张图片
//     * @param canSave      是否可以保存，true，表示需要现实保存按钮，
//     * @param savePath     保存网络图片路径。保存当前图片到 savePath参数的路径；若为空，则存储到相机相册。
//     */
//    private static void previewPictures(Object object, ArrayList<String> preViewList,
//                                        ArrayList<String> selectedList, int maxNum, int position, boolean canSave, String savePath, int mode) {
//
//        if (!(object instanceof Fragment || object instanceof Activity || object instanceof android.app.Fragment)){
//            throw new IllegalArgumentException(" args mast Activity or Fragment");
//        }
//
//        Bundle bundle = new Bundle();
//        bundle.putStringArrayList(PrivateContent.EXTRA_PREVIEW_SELECTED_LIST, preViewList);
//        bundle.putStringArrayList(PrivateContent.EXTRA_DEFAULT_SELECTED_LIST, selectedList);
//        bundle.putInt(PrivateContent.EXTRA_SELECT_COUNT, maxNum);
//        bundle.putInt(PrivateContent.EXTRA_SELECTED_POSITION, position);
//        bundle.putBoolean(PrivateContent.EXTRA_CAN_SAVE, canSave);
//        bundle.putString(PrivateContent.EXTRA_SAVE_PATH, savePath);
//        bundle.putInt(PrivateContent.EXTRA_MODE, mode);
//        if (object instanceof Activity) {
//            Activity activity = (Activity) object;
//            Intent intent = new Intent(activity, MultiImagePreviewActivity.class);
//            intent.putExtra(PrivateContent.BUNDLE_KEY, bundle);
//            if (mode == MultiImagePreviewFragment.MODE_PREVIEW) {
//                activity.startActivity(intent);
//            } else {
//                activity.startActivityForResult(intent, MultiContent.REQUEST_PREVIEW_CODE);
//            }
//        } else if (object instanceof Fragment) {
//            Fragment fragment = (Fragment) object;
//            Intent intent = new Intent(fragment.getActivity(), MultiImagePreviewActivity.class);
//            intent.putExtra(PrivateContent.BUNDLE_KEY, bundle);
//            if (mode == MultiImagePreviewFragment.MODE_PREVIEW) {
//                fragment.startActivity(intent);
//            } else {
//                fragment.startActivityForResult(intent, MultiContent.REQUEST_PREVIEW_CODE);
//            }
//        } else if (object instanceof android.app.Fragment) {
//            android.app.Fragment fragment = (android.app.Fragment) object;
//            Intent intent = new Intent(fragment.getActivity(), MultiImagePreviewActivity.class);
//            intent.putExtra(PrivateContent.BUNDLE_KEY, bundle);
//            if (mode == MultiImagePreviewFragment.MODE_PREVIEW) {
//                fragment.startActivity(intent);
//            } else {
//                fragment.startActivityForResult(intent, MultiContent.REQUEST_PREVIEW_CODE);
//            }
//        }
//
//    }
//
//    /**
//     * 预览模式。只提供预览功能
//     *
//     * @param object      {@link Activity} 或者 {@link Fragment} {@link android.app.Fragment}, 否则抛出{@link IllegalArgumentException}
//     * @param preViewList 预览列表.实际能看到的图片列表
//     * @param position    当前要显示的图片在列表中的位置。若大于列表size 或小于0，则显示第一张图片
//     */
//    public static void previewPictures(Object object, ArrayList<String> preViewList, int position) {
//        previewPictures(object, preViewList, null, 0, position, false, null, MultiImagePreviewFragment.MODE_PREVIEW);
//    }
//
//    /**
//     * 图片预览、选择模式。
//     * 可预览，并选择图片功能，选中图片通过{@link Activity#onActivityResult(int, int, Intent)}方式返回。
//     * <p>
//     * 注意：调用的Activity需实现{@link Activity#onActivityResult(int, int, Intent)}方法。
//     * 返回的requestCode值为{@link MultiContent#REQUEST_PREVIEW_CODE}
//     * 通过
//     *
//     * @param object       {@link Activity} 或者 {@link Fragment} {@link android.app.Fragment}, 否则抛出{@link IllegalArgumentException}
//     * @param preViewList  预览图片url列表.实际能看到的图片列表
//     * @param selectedList 已选择选择列表，preViewList中已经选中的列表
//     * @param maxNum       最大可选择图片总数
//     * @param position     当前要显示的图片在列表中的位置。若大于列表size 或小于0，则显示第一张图片
//     */
//    public static void previewAndChoose(Object object, ArrayList<String> preViewList,
//                                        ArrayList<String> selectedList, int maxNum, int position) {
//        previewPictures(object, preViewList, selectedList, maxNum, position, false, null, MultiImagePreviewFragment.MODE_CHOOSE);
//    }
//
//    /**
//     * 图片预览、存储功能.
//     * 预览图片列表，并存储图片到指定位置，若savePath为null或空，则存储到相机相册。
//     *
//     * @param object      {@link Activity} 或者 {@link Fragment} {@link android.app.Fragment}, 否则抛出{@link IllegalArgumentException}
//     * @param preViewList 预览列表.实际能看到的图片列表
//     * @param position    当前要显示的图片在列表中的位置。若大于列表size 或小于0，则显示第一张图片
//     * @param savePath    保存网络图片路径。保存当前图片到 savePath参数的路径下；若为空，则存储到相机相册。
//     *                    <p>
//     *                    返回List<String>.为存储的地址
//     */
//    public static void previewAndSave(Object object, ArrayList<String> preViewList,
//                                      int position, String savePath) {
//        previewPictures(object, preViewList, null, 0, position, true, savePath, MultiImagePreviewFragment.MODE_SAVE);
//    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.multi_activity_default);
        Intent intent = getIntent();
        fullScreen();
        Bundle bundle = intent.getBundleExtra(PrivateContent.BUNDLE_KEY);
        fragment = new MultiImagePreviewFragment();//(MultiImagePreviewFragment) Fragment.instantiate(this, MultiImagePreviewFragment.class.getName(), bundle);
        fragment.setArguments(bundle);
        getSupportFragmentManager().beginTransaction()
                .add(R.id.image_grid, fragment)
                .commit();
    }

    @Override
    public void onBackPressed() {
        if (fragment != null && fragment.onBackPressed()) {
            return;
        }
        super.onBackPressed();
    }

    private void fullScreen() {
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
        getWindow().setAttributes(params);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }

    private void unFullScreen() {
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().setAttributes(params);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }
}
